圖 5-1: 各欄位資料範例
在 Day 2 我們知道了取得 Nonce 的方法。在 Day 3 瞭解了使用永豐金技術客服給我們的四組雜湊值去計算出 HashId。而 Day 4,則是計算出安全簽章 Sign 的最後一塊拼圖 - 訊息內文雜湊。
我們只距離拿到加密後的 Sign 值只差一步。來複習一下文件第 13 頁,關於組裝 Sign 值的方法。
圖 5-2: 文件第 13 頁。
API 文件的說明指的是訊息內文雜湊的字串尾端接著 Nonce,然後再接著 HashId,是字串附加 (append) 的動作。以下流程圖可以清楚說明整個步驟。
圖 5-3: 取得 Sign 的流程
標著螢光綠的字串為 Nonce 值,標著螢光黃的字串為 HashId,最後再進行 SHA256 加密,取得的字串則是 Sign 值。如果使用的程式語言在加密後的字串是小寫字母,務必轉為大寫。
在 PHP 的世界中,要進行 SHA256 加密真的很容易,只要使用 hash
這個函式即可。
例:
<?php
hash('sha256', $string);
詳細的用法可參閱 PHP 官方說明文件中關於 hash 函式的說明。
圖 5-4: PHP 範例
如上圖所示,第 29 行為內文雜湊,第 30 行為 Nonce 值,第 31 行為 HashId。最後我們在第 33 行,將以上的合併字串進行 SHA256 加密之後轉為大寫字元即為我們要的安全簽章 - Sign 值。
A3EAEE3B361B7E7E9B0F6422B954ECA5D54CEC6EAB0880CB484AA6FDA4154331
接著,明天我們要進行 Message 欄位的加密說明,完成後就可以正式送出建立訂單的請求囉。
本文更新於筆者的 TerryL 部落格,Day 5 - 安全簽章: 取得 SHA256 加密後的 Sign 值,有興趣可前往閱讀及討論。